home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / taylor.bas < prev    next >
BASIC Source File  |  1986-08-10  |  4KB  |  138 lines

  1. 10 CLS:KEY OFF
  2. 20 REM  TAYLOR LINE SOURCE  [FROM DR. FERRARO]
  3. 30 DIM A(400),Y(400),F(400),YY(400),W(400),I(400)
  4. 40 PRINT"                        TAYLOR LINE SOURCE SYNTHESIS":PRINT:PRINT
  5. 50 DEF FN ARCOSH(X)=LOG(X+SQR(X*X-1))
  6. 60 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  7. 70 YMAX=-1000:YMIN=-40
  8. 80 PI=3.141592
  9. 90 INPUT "NUMBER OF EQUAL SIDELOBES ";NB
  10. 100 INPUT"S.L.L (dB) ";RR
  11. 110 INPUT"Aperture length ";L
  12. 120 R=10^(-RR/20): REM  CHANGE FROM DB TO RATIO
  13. 130 A=(1/PI)*FN ARCOSH(R)
  14. 140 S=NB/SQR(A^2+(NB-.5)^2): REM  S ==> SIGMA EQN 10-76
  15. 150 J=0
  16. 160 PRINT"n         a(n)              wn"
  17. 170 FOR N=-NB+1 TO NB-1
  18. 180 X=NB-1
  19. 190 GOSUB 420
  20. 200 C=P
  21. 210 C=C^2
  22. 220 X=NB-1+N
  23. 230 GOSUB 420
  24. 240 D=P
  25. 250 X=NB-1-N
  26. 260 GOSUB 420
  27. 270 E=P
  28. 280 F=C/(D*E)
  29. 290 P=1
  30. 300 FOR M=1 TO NB-1
  31. 310 XM=S*SQR(A^2+(M-.5)^2)
  32. 320 P=P*(1-(N/XM)^2)
  33. 330 NEXT M
  34. 340 SA=F*P
  35. 350 A(J)=SA
  36. 360 W(J)=N/L
  37. 370 'IF N<NB THEN W(J)=SGN((S/L)*SQR(A*A+(N-.5)*(N-.5)))
  38. 380 PRINT USING "##       ##.######           ##.##";N;A(J);W(J)
  39. 390 J=J+1
  40. 400 NEXT N
  41. 410 GOTO 470
  42. 420 P=1: IF X=0 THEN RETURN
  43. 430 FOR I=0 TO X-1
  44. 440 P=P*(X-I)
  45. 450 NEXT I
  46. 460 RETURN
  47. 470 '
  48. 480 PRINT:PRINT"HALF POWER BEAMWIDTHS :-":PRINT
  49. 490 Q=FN ARCOSH(R):X=FN ARCOSH(R/1.414)
  50. 500 QQ=(S/(L*PI))*SQR(Q*Q-X*X)
  51. 510 HP=2*ATN(QQ/SQR(1-QQ*QQ)):HPD=HP*180/PI
  52. 520 HPWI=HP/S:HPWID=HPWI*180/PI
  53. 530 PRINT USING "HP wi = ##.###";HPWI;:PRINT USING" rad      HP i= ##.##";HPWID;:PRINT" deg"
  54. 540 PRINT USING "HP w  = ##.###";HP;:  PRINT USING" rad      HP  = ##.##";HPD;:PRINT" deg"
  55. 550 '
  56. 560 LOCATE 23,1:GOSUB 1290
  57. 570 FOR THETA=0 TO 180
  58. 580   W=COS(THETA*PI/180)
  59. 590   F(THETA)=0
  60. 600   I=0
  61. 610   FOR N=-NB+1 TO NB-1
  62. 620     AA=(W-W(I))*L*PI
  63. 630     IF AA=0 THEN F(THETA)=F(THETA)+A(I):GOTO 660
  64. 640     F(THETA)=F(THETA)+A(I)*SIN(AA)/AA
  65. 650 I=I+1
  66. 660   NEXT N
  67. 670   Y(THETA)=ABS(F(THETA))
  68. 680 Y(THETA)=20*FN LOGTEN(Y(THETA))
  69. 690   IF Y(THETA)>YMAX THEN YMAX=Y(THETA)
  70. 700 NEXT THETA
  71. 710 YMIN=2*RR+YMAX
  72. 720 LOCATE 23,1:PRINT"TYPE RETURN TO CONTINUE...                ";:INPUT W
  73. 730 GOSUB 970
  74. 740 GOSUB 1050
  75. 750 LOCATE 4,75:PRINT"dB"
  76. 760 LOCATE 23,1:GOSUB 1290
  77. 770 ' current distribution
  78. 780 YMIN=0:YMAX=0
  79. 790 MAGS=L/2
  80. 800 I=0
  81. 810 FOR S=-MAGS TO MAGS+MAGS/25 STEP MAGS/100
  82. 820   SUM=0
  83. 830   FOR N=1 TO NB-1
  84. 840     SUM=SUM+A(N+NB-1)*COS(2*PI*N*S/L)
  85. 850   NEXT N
  86. 860   I(I)=(1+2*SUM)/L
  87. 870   Y(I)=ABS(I(I))
  88. 880   IF Y(I)>YMAX THEN YMAX=Y(I)
  89. 890   IF Y(I)<YMIN THEN YMIN=Y(I)
  90. 900   I=I+1
  91. 910 NEXT S
  92. 920 LOCATE 23,1:PRINT"                  TYPE RETURN TO CONTINUE...";:INPUT W
  93. 930 GOSUB 970:GOSUB 1150
  94. 940 LOCATE 4,75:PRINT"    "
  95. 950 GOSUB 1310
  96. 960 END
  97. 970 '      set up screen
  98. 980 SCREEN 2:CLS
  99. 990 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+":NEXT K
  100. 1000 FOR K=4 TO 20 STEP 4:LOCATE K,67:PRINT"-":NEXT K
  101. 1010 VIEW (52,28)-(530,154),,1
  102. 1020 LINE (239,0)-(239,154)
  103. 1030 RETURN
  104. 1040 '
  105. 1050 PSET (0,Y(0))
  106. 1060 WINDOW (0,YMIN)-(180,YMAX)
  107. 1070 FOR X=0 TO 180
  108. 1080   LINE -(X,Y(X))
  109. 1090 NEXT X
  110. 1100 LOCATE 3,20:PRINT"MAGNITUDE  OF SYNTHESISED PATTERN"
  111. 1110 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT USING "###.##";-(YMAX-YMIN)*(K-4)/16:NEXT K
  112. 1120 LOCATE 21,6:PRINT"180":LOCATE 21,37:PRINT"90":LOCATE 21,67:PRINT"0"
  113. 1130 RETURN
  114. 1140 '
  115. 1150 '      MAY 29, 1986
  116. 1160 '      RECTANGULAR PLOT OF DATA
  117. 1170 LOCATE 3,20:PRINT"MAGNITUDE OF CURRENT DISTRIBUTION"
  118. 1180 '
  119. 1190 WINDOW (1,YMIN)-(I,YMAX)
  120. 1200 '
  121. 1210 PSET (1,Y(1))
  122. 1220 FOR X=1 TO I
  123. 1230   LINE -(X,Y(X))
  124. 1240 NEXT X
  125. 1250 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT USING "##.##";(20-K)*YMAX/16:NEXT K
  126. 1260 LOCATE 21,6:PRINT-L/2:LOCATE 21,37:PRINT"0  ":LOCATE 21,66:PRINT L/2
  127. 1270 RETURN
  128. 1280 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  129. 1290 PRINT"I'm doing some calculation.  Please wait..."
  130. 1300 RETURN
  131. 1310 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1370
  132. 1320 AN$=INKEY$
  133. 1330 IF AN$="Y" OR AN$="y" THEN RUN
  134. 1340 IF AN$="N" OR AN$="n" THEN END
  135. 1350 GOTO 1310
  136. 1360 :
  137. 1370 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  138.